package com.pacvue.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Redisson分布式锁配置属性
 * 
 * @author pacvue
 */
@Data
@ConfigurationProperties(prefix = "redisson-lock")
public class RedissonLockProperties {

    /**
     * 是否启用分布式锁功能
     */
    private boolean enabled = true;

    /**
     * Redis配置
     */
    private RedisConfig redis;

    @Data
    public static class RedisConfig {

        /**
         * Redis主机地址
         */
        private String host = "localhost";

        /**
         * Redis端口
         */
        private int port = 6379;

        /**
         * Redis密码
         */
        private String password;

        /**
         * Redis数据库索引
         */
        private int database = 0;

        /**
         * 连接超时时间（秒）
         */
        private int connectionTimeout = 5;

        /**
         * 命令超时时间（秒）
         */
        private int commandTimeout = 3;

        /**
         * 连接池最小空闲连接数
         */
        private int connectionMinimumIdleSize = 5;

        /**
         * 连接池最大连接数
         */
        private int connectionPoolSize = 20;

        /**
         * 重试次数
         */
        private int retryAttempts = 3;
    }
}
